#pragma once

#include "d3dutil.h"

//-----------------------------------------------------
// Transformer Class									
//-----------------------------------------------------
class Transformer
{
public:
	Transformer();				// Constructor
	virtual ~Transformer();		// Destructor

	//-------------------------------------------------
	// Eigen methoden								
	//-------------------------------------------------
	void Reset(D3DXMATRIX &matWorld);

	void Translate(const D3DXVECTOR3 pos, D3DXMATRIX &matWorld);
	/**
	* Adds a translation to the world matrix of this object.
	* @param x the x value for the translation.
	* @param y the y value for the translation.
	* @param z the z value for the translation.
	*/
	void Translate(float x,float y,float z, D3DXMATRIX &matWorld);
	/**
	* Adds a rotation to the world matrix of this object.
	* @param x the rotation around the x axis.
	* @param y the rotatoin around the y axis.
	* @parma z the rotation around the z axis.
	*/
	void Rotate(float x,float y,float z, D3DXMATRIX &matWorld);
	/**
	* Adds a rotation to the world matrix of this object.
	* @param angles the rotation as D3DXVextor with the x,y & z members
	* as the rotation around the respective axises.
	*/
	void Rotate(const D3DXVECTOR3 angles, D3DXMATRIX &matWorld);
	/**
	* Adds a scaling transformation to the world matrix of this object.
	* @param x scales the x dimension of this object.
	* @param y scales the y dimension of this object.
	* @param z scales the z dimension of this object.
	*/
	void Scale(float x, float y , float z, D3DXMATRIX &matWorld);
	/**
	* Adds a  scaling transformation to the world matrix of this object.
	* @param scales the scaling as a D3DXVECTOR3 with the x,y & z members
	* as the scaling parameters for the 3 dimensions of the object.
	*/
	void Scale(const D3DXVECTOR3 scales, D3DXMATRIX &matWorld);


private: 
	//-------------------------------------------------
	// Datamembers								
	//-------------------------------------------------



	// -------------------------
	// Disabling default copy constructor and default 
	// assignment operator.
	// -------------------------
	Transformer(const Transformer& yRef);									
	Transformer& operator=(const Transformer& yRef);	
};

 
